package com.foreknow.demo21;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 * Set集合
 * 特点：一个不包含重复元素的 collection。而且它是一个无序的集合。
 * Set接口 它与List接口相同也继承了Collection接口
 * Set接口的实现有两个：
 * 1.HashSet
 * 它是基于Hash表算法来实现的，存放的顺序不由使用者来控制的，并且允许存放一个null值
 * 使用的方式： Set set = new HashSet();
 * 2.TreeSet(具有排序功能)
 * 使用的方式： Set set = new TreeSet();
 *
 *
 */
public class SetDemo {
  public static void main(String[] args) {
    Person p1 = new Person();
    p1.setId(1);
    p1.setName("tom");

    Person p2 = new Person();
    p2.setId(2);
    p2.setName("jazz");

    Person p3  = new Person();
    p3.setId(3);
    p3.setName("blues");

    Person p4 = new Person();
    p4.setId(4);
    p4.setName("pop");

    Set<Person> set = new HashSet<>();
    set.add(p1);
    set.add(p2);
    set.add(p3);
    set.add(p4);

    Iterator<Person> iterator = set.iterator();
    while (iterator.hasNext()){
      Person person = iterator.next();
      System.out.println(person.getId()+"--"+person.getName());
    }

    System.out.println("-------------TreeSet--------------------");
    Set<Integer> s1 = new TreeSet<>();
    s1.add(6);
    s1.add(2);
    s1.add(34);
    s1.add(1);

    Iterator<Integer> it = s1.iterator();
    while (it.hasNext()){
      System.out.println(it.next());
    }

  }
}
